/**
 * 
 */
package com.google.code.netz.wfe.api;

/**
 * A Workflow transction implementation takes care of ACID properties.
 * 
 * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a>
 * @since 1.0
 * @version $Id$
 */
public interface IWorkflowTransaction<R> {

	/**
	 * Execute a Workflow transaction with a variable number of arguments.
	 * 
	 * @param <R>
	 *            Type of Result Expected
	 * @param args
	 * @return result of Transaction processing.
	 * @throws WorkflowTransactionException
	 */
	public R execute(Object... args) throws WorkflowTransactionException;

}
